package com.yunji.news.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.time.LocalDateTime;

/**
 * 系统配置实体类
 *
 * @author yunji
 * @since 2024-11-25
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("system_configs")
public class SystemConfig {

    /**
     * 主键ID
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 配置键
     */
    @NotBlank(message = "配置键不能为空")
    @Size(max = 100, message = "配置键长度不能超过100字符")
    @TableField("config_key")
    private String configKey;

    /**
     * 配置值
     */
    @TableField("config_value")
    private String configValue;

    /**
     * 配置描述
     */
    @Size(max = 500, message = "配置描述长度不能超过500字符")
    @TableField("description")
    private String description;

    /**
     * 配置分组
     */
    @Size(max = 50, message = "配置分组长度不能超过50字符")
    @TableField("config_group")
    private String configGroup;

    /**
     * 是否可编辑：0-不可编辑，1-可编辑
     */
    @NotNull(message = "是否可编辑不能为空")
    @TableField("editable")
    private Integer editable;

    /**
     * 状态：0-禁用，1-启用
     */
    @NotNull(message = "状态不能为空")
    @TableField("status")
    private Integer status;

    /**
     * 排序
     */
    @TableField("sort_order")
    private Integer sortOrder;

    /**
     * 创建时间
     */
    @TableField(value = "created_at", fill = FieldFill.INSERT)
    private LocalDateTime createdAt;

    /**
     * 更新时间
     */
    @TableField(value = "updated_at", fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updatedAt;

    /**
     * 是否删除：0-未删除，1-已删除
     */
    @TableLogic
    @TableField("deleted")
    private Integer deleted;
}